from sqlalchemy import Column, Integer, String, DateTime, SmallInteger
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime

Base = declarative_base()

class User(Base):
    """
    用户表
    
    Attributes:
        id (int): 用户ID，主键
        username (str): 用户名，唯一
        password (str): 密码，加密存储
        created_at (datetime): 创建时间
        last_login (datetime): 最后登录时间
    """
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True, autoincrement=True)
    username = Column(String(50), unique=True, nullable=False)
    password = Column(String(100), nullable=False)
    created_at = Column(DateTime, default=datetime.now)
    last_login = Column(DateTime)

class BatchProcesses(Base):
    """
    文件处理记录表
    
    Attributes:
        id (int): 记录ID，主键
        batch_id (str): 批次ID
        file_name (str): 文件名
        file_url (str): 处理后的文件URL
        file_original_url (str): 原始文件URL
        result_url (str): 结果文件URL
        process_time (datetime): 处理时间
        file_type (str): 文件类型描述
        created_at (datetime): 创建时间
        status (int): 处理状态
            - 0: 待处理
            - 1: 就绪
            - 2：处理中 
            - 3: 分类完成
            - 4: 处理完成
        type (int): 文件类型
            - 1: 文本类型（txt, md, doc, docx, pdf, csv, xls, xlsx, xlsm）
            - 2: 图片
            - 3: 音频
            - 4: 视频
    """
    __tablename__ = 'batch_processes'
    
    id = Column(Integer, primary_key=True, autoincrement=True)
    batch_id = Column(String(50), nullable=False)
    file_name = Column(String(255), nullable=False)
    file_url = Column(String(255), nullable=False)
    file_original_url = Column(String(255), nullable=False)
    result_url = Column(String(500))
    process_time = Column(DateTime)
    file_type = Column(String(20))
    created_at = Column(DateTime, default=datetime.now)
    status = Column(SmallInteger, default=0)
    type = Column(Integer, nullable=False)

class FileUploadsBatch(Base):
    """
    文件上传批次表
    
    Attributes:
        id (int): 批次记录ID，主键
        batch_id (str): 批次ID
        final_file_url (str): 最终文件URL
        user_id (int): 用户ID
        sort_prompt (str): 排序提示词
        status (int): 批次状态
            - 0: 待处理
            - 1: 就绪
            - 2：处理中 
            - 3: 分类完成
            - 4: 处理完成
        created_at (datetime): 创建时间
    """
    __tablename__ = 'file_uploads_batch'
    
    id = Column(Integer, primary_key=True, autoincrement=True)
    batch_id = Column(String(50), nullable=False)
    final_file_url = Column(String(500))
    user_id = Column(Integer, nullable=False)
    sort_prompt = Column(String(255), nullable=False)
    status = Column(SmallInteger, default=0)
    created_at = Column(DateTime, default=datetime.now) 